Java日期大小比较

您所在的位置:网站首页 java 日期对比大小 Java日期大小比较

Java日期大小比较

2024-07-16 15:47| 来源: 网络整理| 查看: 265

前言

  在 Java 语言中,日期在计算机内部表示为(long型)时间点——自1970年1月1日以来经过的毫秒数。在开发中经常会用到日期的比较,像给定一个日期和当前日期进行比较,或者给定两个日期进行时间先后的比较,还有取两个日期之间的记录等等。现在整理一下几种方法。  

  先定义几个日期,以便下文进行测试:

String beginTime = new String("2020-08-09 13:32:20"); String endTime = new String("2099-10-08 11:21:32"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date beginDate = df.parse(beginTime); Date endDate = df.parse(endTime); LocalDate beginDateLoc = LocalDate.of(2020, 8, 9); LocalDate endDateLoc = LocalDate.of(2099, 10, 8); LocalDate自带方法isBefore、isAfter和isEqual

  使用JDK8新增的函数 isBefore()、isAfter()和isEqual()来比较 LocalDate、LocalTime 和 LocalDateTime,本文仅以LocalDate为例。

if (beginDateLoc.isBefore(endDateLoc)) { System.out.println("beginDate is before endDate"); } if (beginDateLoc.isAfter(endDateLoc)) { System.out.println("beginDate is after endDate"); } if (beginDateLoc.isEqual(endDateLoc)) { System.out.println("beginDate is equal to endDate"); }

 

LocalDate自带方法compareTo System.out.println(beginDateLoc.compareTo(endDateLoc)); endDateLoc = LocalDate.of(2020, 6, 18); System.out.println(beginDateLoc.compareTo(endDateLoc));

  compareTo(ChronoLocalDate other)方法用法描述:如果此 Date等于参数 other,则返回0;如果在 other之前,则返回小于 0 的值;否则,返回大于 0 的值。

 

Date自带方法before和after比较 System.out.println(beginDate.before(endDate)); System.out.println(beginDate.after(endDate)); System.out.println(beginDate.equals(endDate));

  温馨提示:日期格式必须一致。

把日期转化成长整型进行比较 /** * 功能描述:求两个时间相减后的毫秒数。 * 差格式化时间后,计算 endDt 减 beginDt 的秒数。 * millDif >0 : endDt > beginDt * * @param beginDt 开始时间 * @param endDt 结束时间 * @return Long 时间差,单位:milliseconds */ public static Long getMillSub(String beginDt, String endDt, String formatStr) { long millDif = 0; if (StringUtils.isBlank(formatStr)) { formatStr = "yyyy-MM-dd"; } try { SimpleDateFormat df = new SimpleDateFormat(formatStr); Date beginDate = df.parse(beginDt); Date endDate = df.parse(endDt); millDif = endDate.getTime() - beginDate.getTime(); } catch (Exception e) { log.error("日期转换失败,", e); return null; } return millDif; }

 

Calender自带方法before()和after()

 Calendar 类也有 compareTo、equals、after 和 before 方法,工作方式与上面描述的 Date 类的方法类似。因此,如果日期信息保存在 Calendar 类中,则不需要提取日期进行比较。

Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); cal1.setTime(beginDate); cal2.setTime(endDate); if (cal1.after(cal2)) { System.out.println("beginTime is after endTime"); } if (cal1.before(cal2)) { System.out.println("beginTime is before endTime"); } if (cal1.equals(cal2)) { System.out.println("beginTime is equal to endTime"); }

 

小结

   本文主要总结了在 Java 中比较日期的几种常用方法,以提高自己实际操作的能力。

   文章到这里就结束了,看完之后你有什么想法想要跟大家分享呢?评论区在等着你!

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3